                  HIST197.LBR: Recalling Commands in CP/M

     Do you growl when you have to re-enter a long command line that was 
rejected because you got one letter wrong?  Don't you hate to retype the 
same line again and again with just minor changes?  Wouldn't you love to 
recall that sequence of commands you gave about 20 lines back?   
 
     Those of you who work on a VAX/VMS system know that by proper use of 
the arrow keys you can, in fact, recall any of your last 20 commands, edit 
them, and replay them to your heart's content.  (I understand that UNIX 
offers a similar capability.)  

     Well, gnash your teeth no longer -- you can now have it in CP/M too.  
HISTORY.LBR, version 1.9, from Stuart Rose of Starling RCMP+, has made it 
possible whether you use CP/M 2.2 (CP/M-80) or CP/M 3.0 (CP/M+).  That is, 
you can have it in CP/M 2.2 if you are willing to give up about 5.3K of your 
precious 64K.  

     I was willing.  I will go to any lengths to make my fingerwork at the 
keyboard more efficient, so I eagerly tried out HISTORY on my Kaypro II '83.  
It worked beautifully!  Until the first Warm Boot, when it disappeared.  Hmm 
-- there must be a way to fix that.  And, too, make it look more like 
VAX/VMS so I won't get so confused.  And make it less of a memory hog.  And 
implement the CTRL-P printer toggle.  And omit saving responses within 
applications programs that are too short to be worth recalling.  And make it 
compatible with NSWP 2.07.  And ...

     So I went to work tuning up version 1.9 to suit my own needs.  The 
result is called HIST197, nominally the seventh revision of HISTORY 1.9.  
(Believe me, there were a lot more than 7!)  No matter that the amount of 
time and fingerwork I invested vastly exceeds the grand total of what I will 
save in the rest of my CP/M life -- I am now so much more "efficient"!  Of 
course, HIST197 has a few unpolished edges, but it really works and has done 
no damage to my programs or documents.  

     HIST197 loads a memory-resident "daemon" that looks and feels almost 
exactly like VAX/VMS (4.0 or higher).  For those of you who are comfortable 
with WordStar, most of Stuart's original WordStar-like keystrokes are still 
there.  The daemon loaded by HIST197.COM saves more command lines than the 
one loaded by version 1.9, yet is substantially smaller.  

     Here's how to use HIST197.  First load the daemon by typing HIST197 
with the appropriate disk drive prefix.  Give a few commands to CP/M for a 
trial.  Now recall your last command with the up arrow (or CTRL-W).  You can 
keep recalling earlier and earlier commands this way up to a maximum of 23.  
Go back down the list with the down arrow (or CTRL-Z).  With a single ! 
command, you can see all of your previous commands, or rather, as many as 
will fit on a Kaypro II screen (23).  The commands are "numbered"; if you 
want to recall command number n, just type !n.  

     So now you have a previous command line at your disposal.  To replay 
it, press RETURN.  If you want to change some characters before replay, use 
the left arrow (or CTRL-S) or the right arrow (or CTRL-D) to move the 
cursor.  CTRL-B takes the cursor to the beginning of the line.  Then you can 
overstrike with the correct character(s).  You can toggle between overstrike 
mode and insert mode with CTRL-A (or CTRL-V).  To delete the character at 
the cursor, type CTRL-G.  To get rid of the one to the left of the cursor, 
use the DEL key.  You can also overstrike with spaces between whole words of 
a command -- CP/M won't mind the spaces.  

     The standard CP/M printer on/off toggle, CTRL-P, is implemented in 
HIST197.  The default option saves only commands to CP/M.  To enable recall 
of your responses to an applications program as well, type CTRL-O (even in 
the middle of a response); type CTRL-O again to toggle back to saving CP/M 
commands only.   

     As mentioned above, you load the daemon by simply typing HIST197.  You 
can easily patch the system tracks on your boot-up diskette so that this 
will be done automatically for you on a cold start.  If you need to recover 
the memory space occupied by the daemon and the CCP, you can unload the 
daemon by typing HIST197 u (or any character, even a space, beyond the 7).  
If you type HIST197 when the daemon is already resident, the daemon will be 
reloaded and all of your saved commands will be wiped out.  (I can't see why 
you would want to do this, but if you do it be sure to give CTRL-C as your 
first command after the reload -- there's a bug lurking here that hasn't 
been squashed.)  

     The whole story is in HIST197.LBR.  This library includes HIST197.COM, 
which is suitable for a Kaypro II and patchable for other CP/M 2.2 machines.  
If you don't like my choice of features or key assignments, you can easily 
substitute your own in the source program and reassemble.  For CP/M 3.0, it 
is essential to have HISTORY.LBR in order to build a .COM file.  


April 4, 1987                                Melvyn L. Halbert
                                             104 Morgan Road
(615) 483-0717 (voice only, 7-10 pm EDT)     Oak Ridge, TN 37830
